# -*- coding: utf-8 -*-

'''eof
name:过去两年法人、股东、地址、经营范围变更同时发生概率
code:EG10_LegalShareholderOperAddressChangeRatio
tableName:
columnName:
groups:企业通用模块
dependencies:EG_DSJ
type:常用指标
datasourceType:在线指标
description:
eof'''


import sys
import pandas as pd
import json
from datetime import datetime
reload(sys)
sys.setdefaultencoding('utf-8')

def FormatData(tableName):
    try:
        eg = EG_DSJ.get("data").get("R1103V3")[0].get(tableName)
        return eg if isinstance(eg, list) else [{}]
    except:
        return [{}]


# 统一转成datetime对象，只能转年月日的字符串
def date_format(str):
    import re
    r = re.compile(r'\D+')
    try:
        time = str[0:10]
        date = datetime.strptime(time, '%Y.%m.%d').strftime('%Y%m%d')
    except:
        try:
            date = datetime.strptime(time, '%Y-%m-%d').strftime('%Y%m%d')
        except:
            try:
                date = datetime.strptime(time, '%Y/%m/%d').strftime('%Y%m%d')
            except:
                try:
                    tmp = r.sub('', time)
                    date = datetime.strptime(tmp, '%Y%m%d').strftime('%Y%m%d')
                except:
                    date = None
    return date


def get_date_list():
    try:
        now = datetime.now()
        aaa = [(now + pd.tseries.offsets.DateOffset(months=i)).strftime('%Y%m%d') for i in [-24, 0]]
        return aaa
    except:
        return None


def getEG07():
    null_type_list = ['', ' ', None, 'null', 'Null', 'NULL', '/', '-', '--']
    gd_change_list = [u'投资比例变更',
u'认缴的出资额,认缴的出资方式,认缴的出资时间,实缴的出资额,实缴的出资方式,实缴的出资时间,投资人',
u'投资人(股权)备案',
u'股东名录',
u'投资人(股权)变更',
u'股东、发起人（出资情况）更',
u'非公司企业法人主管部门（出资人）备案',
u'主管部门（出资人）变动备案',
u'股东（发起人）认缴出资额',
u'认缴的出资额,认缴的出资方式,认缴的出资时间,实缴的出资额,实缴的出资方式,实缴的出资时间',
u'其他变投资人信息变更',
u'自然人股东',
u'出资比例变更(%)',
u'股东（投资人）变更',
u'投资股权变更',
u'股东变更',
u'股东备案',
u'主管部门(出资人)名称',
u'投资人姓名',
u'股东改变姓名或名称',
u'股东变更(股权转让)',
u'投资人变更（包括出资额、出资方式、出资日期、投资人名称等）',
u'出资人变更',
u'投资者名称(姓名)变更',
u'投资人姓名变更',
u'投资人变更',
u'认缴的出资额,投资人',
u'出资比例变更',
u'股东或股份发起人改变姓名或名称',
u'投资人（股权）变更',
u'股东、投资人变更（股权转让）',
u'出资比例备案',
u'投资人（股权）备案',
u'投资人信息变更',
u'股东或股份发起人改变姓名或名称变更',
u'法人股东',
u'股东变更（股权转让）',
u'股东发起人',
u'投资人变更（包括出资额、出资方式、出资日期、投资人名称等）变更',
u'投资人',
u'股东名录变更',
u'投资人股权变更',
u'股权',
u'股东（投资人）',
u'出资比例',
u'出资日期变更',
u'股权变更',
u'出资日期备案',
u'投资人(股权)变更变更',
u'股东、发起人（出资情况）变更',
u'投资人信息变更（包括投资人、出资额、出资方式、出资日期、投资人名称等）',
u'股东名称变更',
u'出资方式备案',
u'出资方式变更',
u'投资者名称（姓名）变更',
u'股东、发起人、出资人（出资情况）',
u'股东、发起人（出资情况）',
u'股东（出资情况）',
u'其投资人股权变更',
u'投资者名称变更',
u'投资人变更（包括出资额变更、出资方式、出资日期、投资人名称等）',
u'投资人名称(姓名)变更',
u'出资额变更',
u'投资总额变更',
u'资金数额变更']
    legal_person_change_list = [u'法人代表变更',
u'负责人变更（法定代表人、负责人、首席代表、个体户经营者、投资人、合伙事务执行人等变更）',
u'法定代表人（负责人）变更',
u'执行合伙企业事务的合伙人',
u'法定代表人变更',
u'法定代表人姓名',
u'负责人（法定代表人、首席代表、合伙事务执行人等）变更',
u'法定代表人(负责人、董事长、首席代表)变更',
u'负责人变更（法定代表人、负责人、首席代表、合伙事务执行人等变更）',
u'法定代表人（负责人、董事长、首席代表）变更',
u'法定代表人',
u'执行合伙企业事务的合伙',
u'法定代表人(负责人、独资投资人)',
u'负责人变更（法定代表人、负责人、首席代表、合伙事务执行人等变更）变更',
u'负责人变更',
u'法定代表人（负责人）',
u'经营者姓名',
u'负责人变更（法定代表人、负责人、首席代表、个体户经营者、投资人、合伙事务执行人等变更）']
    address_change_list = [u'村',
u'营业场所',
u'住所/经营场所',
u'住所(经营场所)变更',
u'乡(镇/街道)',
u'住所(营业场所、地址)变更',
u'地址变更',
u'村(路/社区)',
u'住所（营业场所、地址）变更',
u'住所',
u'经营场所',
u'住所（经营场所）变更',
u'地址变更（住所地址、经营场所、驻在地址等变更）',
u'住所(地址)',
u'企业住所变更',
u'住所变更',
u'地址变更（住所地址、经营场所、驻在地址等变更）',
u'县(市/区)',
u'镇',
u'地址变更（住所地址、经营场所、驻在地址等变更）变更',
u'住所所在行政区划',
u'省',
u'经营场所变更',
u'住所/经营场所变更',
u'村（路/社区）',
u'住所或经营场所信息',
u'市',
u'号',
u'驻在地址变更']
    business_change_list = [u'经营项目变更',
u'经营范围(业务范围)变更',
u'一般经营项目变更',
u'经营范围变更（含业务范围变更）',
u'一般经营项目',
u'经营类别',
u'主营项目类别',
u'具体经营项目申报',
u'经营范围变更（含业务范围变更）变更',
u'经营方式变更',
u'兼营范围',
u'经营范围（业务范围）变更',
u'经营范围',
u'经营(业务)范围',
u'经营范围变更',
u'业务范围变更',
u'经营范围变更（含业务范围变更）',
u'经营范围变更）',
u'许可经营项目变更']
    try:
        alter_list = FormatData("alterList")
        if alter_list == [{}]:
            return u'缺失值'
        else:
            if len(alter_list) >= 1:
                result_list = []
                flag = False
                date_list = get_date_list()
                for i in alter_list:
                    alt_item = i.get("altItem")
                    alt_date = date_format(i.get("altDate"))
                    if alt_date not in null_type_list and alt_item not in null_type_list:
                        flag = True
                        if date_list[0] < date_format(alt_date[0:10]) <= date_list[1]:
                            if alt_item in gd_change_list:
                                result_list.append("gd_change")
                            elif alt_item in legal_person_change_list:
                                result_list.append("legal_person_change")
                            elif alt_item in address_change_list:
                                result_list.append("address_change")
                            elif alt_item in business_change_list:
                                result_list.append("business_change")
                            else:
                                continue
                return len(set(result_list))*0.25 if flag else u'缺失值'
            else:
                return 0
    except:
        return u'缺失值'


if __name__ == "__main__":
    file_obj = open(r"C:\Users\WYL\Desktop\case.json", 'r')
    content = file_obj.read()
    EG_DSJ = json.loads(content, strict=False)
    aa = getEG07()
    print aa

result = getEG07()

